package qmlt.dataset;

import java.util.List;

import qmlt.dataset.filter.Filter;

public interface DataSet
{
	
	// basic
	String getId();

	DataSetDef getDef();
	
	List<Attribute> getFeatureDefs();

	Attribute getTargetDef();

	List<Instance> getInstances();

	// randomize
	void randomPermute();

	// split
	// List<DataSet> split(Map<String, List<String>> config);
	// Map<String, List<String>> getSplitConfig();

	List<DataSet> randomSplit(String id1, double ratio1, String id2);

	List<DataSet> randomSplit(String id1, double ratio1, String id2, double ratio2, String id3);

	// filter
	DataSet filter(Filter filter);

	// set operation
	DataSet union(DataSet ds, String id);

	DataSet intersection(DataSet ds, String id);

}
